<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- <script type="text/javascript">


        // function a() {
        //     i ++;
        //     console.log(i);
        // }
        // var i = 0;
        // setInterval(a, 1000);// 每隔1000毫秒就会自己执行一次这个函数，使用匿名函数
    
        
    
        var firstTime = new Date().getTime();    
        setInterval(function(){    //是定义在全局的方法
            var lastTime = new Date().getTime();
            console.log(lastTime - firstTime);
            firstTime = lastTime;
        }, 1000); //这个方法是很不准的，间隔一秒不是很准


    </script> -->

    <!-- <script>

        // clearInterval();
        var i = 0;
        var timer1 = setInterval(function(){
            i ++;
            console.log(i);
            if(i > 10){
                clearInterval(timer1);  // 记住，清除定时器要在里面，了解js的执行队列，放在外面为什么不行
            }
        }, 1000); //返回一个数字，作为一个唯一标识,写定时器一定要写timer接收
        
        var timer2 = setInterval(function(){

        }, 2000);

        console.log(timer1, timer2); // 1  2
        // 定时器的返回值是按顺序返回编号的，即使前面的定时器被清除后在创建新的定时器，也还是会接上面的编号
        if(i > 5){
             clearInterval(timer1);
        }

    </script> -->

    <script>
        // 真正的定时器

        var timer = setTimeout(function(){  //隔多长时间执行函数，只执行一次
            console.log('a');
        }, 1000);
        // 比如电影，试看5分钟，但是若5分钟之内续费了，也需要取消定时器

        console.log(timer); // 1
        clearTimeout(timer);// 返回值timer不会和setInterval的重叠



        setInterval("console.log('a')；", 1000); //函数部分也可以这样用
        // 定时器里面的代码报错，会继续执行
    </script>

</body>
</html>